var createError = require("http-errors");
var express = require("express");
var path = require("path");
var cookieParser = require("cookie-parser");
var logger = require("morgan");
var cors = require("cors");
// 引入数据库连接
require('./db/setmongoose');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var ltcRouter = require('./routes/ltc');
var jjxRouter = require('./routes/jjx');
var jjkRouter = require('./routes/jjk');
var bkcRouter = require('./routes/bkc');
var zjxRouter = require('./routes/zjx');
var expressPickupRouter = require('./routes/express-pickup');
var addressRouter = require('./routes/address');
var foodPickupRouter = require('./routes/food-pickup');
var authRouter = require('./routes/auth');
var app = express();

// view engine setup
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "jade");

app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));
app.use(cors());

// 处理favicon.ico请求，避免404错误
app.get("/favicon.ico", (req, res) => {
  res.status(204).end(); // 返回204 No Content，表示成功但无内容
});

app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/ltc',ltcRouter);
app.use('/jjx',jjxRouter);
app.use('/jjk',jjkRouter);
app.use('/bkc',bkcRouter);
app.use('/zjx',zjxRouter);
app.use('/express-pickup', expressPickupRouter);
app.use('/address', addressRouter);
app.use('/food-pickup', foodPickupRouter);
app.use('/auth', authRouter);
// 添加h5api路径前缀，用于H5环境
app.use('/h5api/auth', authRouter);
app.use('/h5api/zjx', zjxRouter);
// catch 404 and forward to error handler
app.use(function (req, res, next) {
  next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get("env") === "development" ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render("error");
});

module.exports = app;
